package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import util.Conexion;
import bean.Movimiento;

public class MovimientoDAO {
	
	public List<Movimiento> getMovimientos(Movimiento movimiento) throws SQLException{
		List<Movimiento> movimientos = new ArrayList<Movimiento>();
		String sql = "";
		if(movimiento.getMDEJER()>0){
			sql+="and MDEJER = ? ";
		}
		if(movimiento.getMDPERI()>0){
			sql+="and MDPERI = ? ";
		}
		if(movimiento.getMDCOMP()>0){
			sql+="and MDCOMP = ? ";
		}
		if(movimiento.getMDFECH()>0){
			sql+="and MDFECH = ? ";
		}
		if(!movimiento.getMDALMF().isEmpty()){
			sql+="and MDALMF = ? ";
		}
		if(!movimiento.getMDALMV().isEmpty()){
			sql+="and MDALMV = ? ";
		}
		if(!movimiento.getMDCMOV().isEmpty()){
			sql+="and MDCMOV = ? ";
		}
		if(!movimiento.getMDTMOV().isEmpty()){
			sql+="and MDTMOV = ? ";
		}
		if(!movimiento.getMDANAQ().isEmpty()){
			sql+="and MDANAQ = ? ";
		}
		if(!movimiento.getMDCOAR().isEmpty()){
			sql+="and MDCOAR = ? ";
		}
		if(!movimiento.getMHPISO().isEmpty()){
			sql+="and MHPISO = ? ";
		}
		
		PreparedStatement pstm = Conexion.obtenerConexion().prepareStatement("select "
				+ "MDALMV,MDALMF,MDEJER,MDPERI,MDCMOV,MDTMOV,MDCOMP,MDCORR,MHPISO,MDPRIO,MDANAQ,MDFILA,MDCOLU,MDFECH,MDCOAR,ARTDES,MDCANT,MDUMED,MDSITU,MDREF1,MDREF2,MHUCRE,MHFCRE,MHHCRE,ifnull(MHUMOD,'') MHUMOD,MHFMOD,MHHMOD "
				+ "from prodtecni.tmovh inner join prodtecni.tmovd on MHALMV=MDALMV and MHALMF=MDALMF and MHEJER=MDEJER and MHPERI=MDPERI and MHCMOV=MDCMOV and MHTMOV=MDTMOV and MHCOMP=MDCOMP "
				+ "inner join speed400tc.tarti on mdcoar=artcod where MDFECH>0 "+sql);
		int parametro = 0;
		if(movimiento.getMDEJER()>0){
			pstm.setInt(++parametro, movimiento.getMDEJER());
		}
		if(movimiento.getMDPERI()>0){
			pstm.setInt(++parametro, movimiento.getMDPERI());
		}
		if(movimiento.getMDCOMP()>0){
			pstm.setInt(++parametro, movimiento.getMDCOMP());
		}
		if(movimiento.getMDFECH()>0){
			pstm.setInt(++parametro, movimiento.getMDFECH());
		}
		if(!movimiento.getMDALMF().isEmpty()){
			pstm.setString(++parametro, movimiento.getMDALMF());
		}
		if(!movimiento.getMDALMV().isEmpty()){
			pstm.setString(++parametro, movimiento.getMDALMV());
		}
		if(!movimiento.getMDCMOV().isEmpty()){
			pstm.setString(++parametro, movimiento.getMDCMOV());
		}
		if(!movimiento.getMDTMOV().isEmpty()){
			pstm.setString(++parametro, movimiento.getMDTMOV());
		}
		if(!movimiento.getMDANAQ().isEmpty()){
			pstm.setString(++parametro, movimiento.getMDANAQ());
		}
		if(!movimiento.getMDCOAR().isEmpty()){
			pstm.setString(++parametro, movimiento.getMDCOAR());
		}
		if(!movimiento.getMHPISO().isEmpty()){
			pstm.setString(++parametro, movimiento.getMHPISO());
		}
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			Movimiento mov = new Movimiento();
			mov.setMDALMV(rs.getString("MDALMV"));
			mov.setMDALMF(rs.getString("MDALMF"));
			mov.setMDEJER(rs.getInt("MDEJER"));
			mov.setMDPERI(rs.getInt("MDPERI"));
			mov.setMDCMOV(rs.getString("MDCMOV"));
			mov.setMDTMOV(rs.getString("MDTMOV"));
			mov.setMDCOMP(rs.getInt("MDCOMP"));
			mov.setMDCORR(rs.getInt("MDCORR"));
			mov.setMHPISO(rs.getString("MHPISO"));
			mov.setMDPRIO(rs.getInt("MDPRIO"));
			mov.setMDANAQ(rs.getString("MDANAQ"));
			mov.setMDFILA(rs.getString("MDFILA"));
			mov.setMDCOLU(rs.getString("MDCOLU"));
			mov.setMDFECH(rs.getInt("MDFECH"));
			mov.setMDCOAR(rs.getString("MDCOAR"));
			mov.setARTDES(rs.getString("ARTDES"));
			mov.setMDCANT(rs.getDouble("MDCANT"));
			mov.setMDUMED(rs.getString("MDUMED"));
			mov.setMDSITU(rs.getString("MDSITU"));
			mov.setMDREF1(rs.getString("MDREF1"));
			mov.setMDREF2(rs.getString("MDREF2"));
			mov.setMHUCRE(rs.getString("MHUCRE"));
			mov.setMHFCRE(rs.getInt("MHFCRE"));
			mov.setMHHCRE(rs.getInt("MHHCRE"));
			mov.setMHUMOD(rs.getString("MHUMOD"));
			mov.setMHFMOD(rs.getInt("MHFMOD"));
			mov.setMHHMOD(rs.getInt("MHHMOD"));
			movimientos.add(mov);
		}
		rs.close();
		pstm.close();
		return movimientos;
	}
 
}
